home *** CD-ROM | disk | FTP | other *** search
/ Just Call Me Internet / Just Call Me Internet.iso / prog / atari / m2 / cat3src / magic / extobfix.m < prev    next >
Text File  |  1997-10-26  |  11KB  |  186 lines

  1. MODULE ExtObFix;
  2.  
  3. (*$R-,S-*)
  4. FROM SYSTEM     IMPORT ADDRESS, ADR, BYTE, CADR, ASSEMBLER, CALLSYS;
  5.  
  6. IMPORT MagicVDI;
  7. IMPORT MagicAES;
  8. IMPORT mtAppl;
  9. IMPORT mtArea;
  10. IMPORT mtRsc;
  11. IMPORT mtMenubase;
  12. IMPORT mtXobjects;
  13. IMPORT mtPopups;
  14. IMPORT mtDials;
  15. IMPORT mtAlerts;
  16. IMPORT StrConv;
  17. IMPORT MagicStrings;
  18.  
  19. (*$Z+*)
  20. TYPE Rectangle = RECORD
  21.                   x, y, w, h : INTEGER
  22.                  END;
  23.  
  24. TYPE    tObjcTree =     POINTER TO ARRAY [0..MAX(INTEGER)] OF MagicAES.OBJECT;
  25.  
  26. (*----------------------------------------------------------------------* *        Resource-Coder 1.03  (C)92 by Peter Hellinger Software        * *----------------------------------------------------------------------* *           Inline-Resource erzeugt am 15.10.1993 12:56:34             * *----------------------------------------------------------------------*) TYPE tRscData = ARRAY [0..557] OF CARDINAL; CONST RscData = tRscData {        00000H, 00028H, 001D8H, 001D8H, 001D8H, 001D8H, 001D8H, 0045AH, 0045AH,         00024H, 00012H, 00001H, 00000H, 00000H, 00000H, 00000H, 00000H, 0045AH,         00000H, 00028H, 0FFFFH, 00001H, 00011H, 00014H, 00400H, 00090H, 00002H,         01100H, 00000H, 00000H, 0003AH, 00018H, 00002H, 0FFFFH, 0FFFFH, 01119H,         00040H, 00010H, 000FFH, 01101H, 00038H, 00000H, 00002H, 00001H, 00003H,         0FFFFH, 0FFFFH, 0131AH, 00000H, 00000H, 00000H, 001D8H, 00002H, 00001H,         00035H, 00001H, 00004H, 0FFFFH, 0FFFFH, 0001CH, 00000H, 00000H, 00000H,         00204H, 00002H, 00003H, 0001FH, 00001H, 00005H, 0FFFFH, 0FFFFH, 0001CH,         00000H, 00000H, 00000H, 00224H, 00002H, 00004H, 0002BH, 00001H, 00006H,         0FFFFH, 0FFFFH, 0131CH, 00000H, 00080H, 00000H, 00250H, 00002H, 00805H,         0002CH, 00001H, 00007H, 0FFFFH, 0FFFFH, 0001CH, 00000H, 00000H, 00000H,         0027DH, 00002H, 00007H, 0002EH, 00001H, 00008H, 0FFFFH, 0FFFFH, 0001CH,         00000H, 00000H, 00000H, 002ACH, 00002H, 00008H, 0002BH, 00001H, 00009H,         0FFFFH, 0FFFFH, 0001CH, 00000H, 00000H, 00000H, 002D8H, 00002H, 00009H,         0002AH, 00001H, 0000AH, 0FFFFH, 0FFFFH, 0001CH, 00000H, 00000H, 00000H,         00303H, 00002H, 0000BH, 00035H, 00001H, 0000BH, 0FFFFH, 0FFFFH, 0001CH,         00000H, 00000H, 00000H, 00339H, 00002H, 0000EH, 00019H, 00001H, 0000CH,         0FFFFH, 0FFFFH, 0001CH, 00000H, 00000H, 00000H, 00353H, 00002H, 0000FH,         00019H, 00001H, 0000DH, 0FFFFH, 0FFFFH, 0001CH, 00000H, 00000H, 00000H,         0036DH, 00002H, 00010H, 0001AH, 00001H, 0000EH, 0FFFFH, 0FFFFH, 0121AH,         00607H, 00080H, 00000H, 00388H, 0002EH, 00016H, 00009H, 00001H, 0000FH,         0FFFFH, 0FFFFH, 0001CH, 00000H, 00000H, 00000H, 0038CH, 00002H, 0000CH,         00035H, 00001H, 00010H, 0FFFFH, 0FFFFH, 0001CH, 00000H, 00000H, 00000H,         003C2H, 00002H, 00012H, 00031H, 00001H, 00011H, 0FFFFH, 0FFFFH, 0001CH,         00000H, 00000H, 00000H, 003F4H, 00002H, 00013H, 00034H, 00001H, 00000H,         0FFFFH, 0FFFFH, 0001CH, 00020H, 00000H, 00000H, 00429H, 00002H, 00014H,         00030H, 00001H, 04869H, 06C66H, 06520H, 08162H, 06572H, 02065H, 07277H,         06569H, 07465H, 07274H, 06520H, 04D61H, 06769H, 06344H, 06961H, 06C2DH,         04F62H, 06A65H, 06B74H, 07479H, 07065H, 06E00H, 04265H, 06C69H, 06562H,         06967H, 06572H, 0204DH, 06F76H, 06572H, 03A20H, 03137H, 02C20H, 0544FH,         05543H, 04845H, 05849H, 05400H, 0466CH, 07944H, 06961H, 06C2DH, 04563H,         06B65H, 02020H, 02020H, 03A20H, 07A75H, 07384H, 0747AH, 06C69H, 06368H,         02049H, 0424FH, 0582CH, 0204FH, 05554H, 04C49H, 04E45H, 04400H, 05461H,         07374H, 06174H, 07572H, 06265H, 06469H, 0656EH, 06261H, 07265H, 0204FH,         0626AH, 0656BH, 07465H, 02028H, 0616CH, 06C65H, 02053H, 0454CH, 04543H,         05441H, 0424CH, 04529H, 00052H, 06164H, 0696FH, 06275H, 07474H, 06F6EH,         02020H, 03A20H, 03138H, 02C20H, 04255H, 05454H, 04F4EH, 0206FH, 06465H,         07220H, 05354H, 05249H, 04E47H, 02C20H, 05242H, 05554H, 0544FH, 04E00H,         04368H, 06563H, 06B62H, 06F78H, 02020H, 02020H, 0203AH, 02031H, 0382CH,         02042H, 05554H, 0544FH, 04E20H, 0287EH, 05242H, 05554H, 0544FH, 04E2CH,         0207EH, 04558H, 04954H, 02900H, 04578H, 06974H, 06275H, 07474H, 06F6EH,         02020H, 0203AH, 02031H, 0382CH, 02042H, 05554H, 0544FH, 04E2CH, 02045H,         05849H, 05420H, 02821H, 05242H, 05554H, 0544FH, 04E29H, 00055H, 06E64H,         06F62H, 07574H, 0746FH, 06E20H, 02020H, 03A20H, 07A75H, 07384H, 0747AH,         06C69H, 06368H, 0206EH, 06F63H, 06820H, 06F62H, 05F66H, 06C61H, 06773H,         02042H, 06974H, 02031H, 03420H, 07365H, 0747AH, 0656EH, 00053H, 07065H,         06354H, 06578H, 07420H, 02020H, 02020H, 03A20H, 03139H, 02C20H, 05354H,         05249H, 04E47H, 00046H, 07261H, 06D65H, 0426FH, 07820H, 02020H, 02020H,         03A20H, 03230H, 02C20H, 04255H, 05454H, 04F4EH, 00043H, 06972H, 0636CH,         06562H, 07574H, 0746FH, 06E20H, 03A20H, 03232H, 02C20H, 0424FH, 05843H,         04841H, 05200H, 05B4FH, 04B00H, 04865H, 06C70H, 06275H, 07474H, 06F6EH,         02020H, 0203AH, 0207AH, 07573H, 08474H, 07A6CH, 06963H, 06820H, 06E6FH,         06368H, 0206FH, 0625FH, 0666CH, 06167H, 07320H, 04269H, 07420H, 03135H,         02073H, 06574H, 07A65H, 06E00H, 04265H, 06920H, 06465H, 06E20H, 04F62H,         06A65H, 06B74H, 07479H, 07065H, 06E20H, 05370H, 06563H, 05465H, 07874H,         02075H, 06E64H, 02046H, 07261H, 06D65H, 0426FH, 07820H, 06973H, 07420H,         06469H, 06500H, 04461H, 07273H, 07465H, 06C6CH, 0756EH, 06720H, 06162H,         06884H, 06E67H, 06967H, 02076H, 06F6DH, 0204FH, 0626AH, 0656BH, 07473H,         07461H, 07475H, 0732EH, 0204CH, 06569H, 06465H, 07220H, 07265H, 06963H,         06874H, 00068H, 06965H, 07220H, 06465H, 07220H, 0506CH, 06174H, 07A20H,         06E69H, 06368H, 0742CH, 02075H, 06D20H, 06461H, 07320H, 0616CH, 06C65H,         07320H, 06461H, 0727AH, 07573H, 07465H, 06C6CH, 0656EH, 02E00H, 00000H        }; (* Ende RscData *)(*----------------------------------------------------------------------*)
  27.  
  28. (* Eigener Stack, da MM2 den Stack auf A3 liegen hat und der von
  29.  * Interface wohl nicht initialisiert wird
  30.  *)
  31.  
  32. VAR myStack : ARRAY [0..2047] OF BYTE;
  33.                  
  34. PROCEDURE TestForm(tree : tObjcTree; editobj: INTEGER; get_n : ADDRESS; window : ADDRESS);
  35.   VAR r : Rectangle;
  36.       usr, but : INTEGER;
  37.       name: ARRAY[0..59] OF CHAR;
  38.       alt : ARRAY [0..127] OF CHAR;
  39. BEGIN
  40.   IF mtDials.NewDial (tree)                  (* Neuen Dialog erzeugen *)
  41.   THEN
  42.     mtDials.DialCenter (tree, mtDials.CSCREEN, 0, 0, r);     (* zentrieren *)
  43.     mtDials.DialForm (tree, mtDials.DSTART, r, r);           (* Bildschirm reservieren *)
  44.     REPEAT
  45.       mtDials.DialDraw (tree, 0, 99, r, FALSE);              (* Dialog zeichnen *)
  46.       but := mtDials.DialDo (tree, editobj);                 (* FormDo-Ersatz   *)
  47.       (* Button deselektieren *)
  48.       EXCL (tree^[but].obState, MagicAES.SELECTED);
  49.       (* Jetzt getName aufrufen mit TC-Parametern *)
  50.       ASSEMBLER
  51.         MOVEM.L D0-A6,-(SP)     ; Register sichern 
  52.         MOVE.W  but(A6),D0      ; Button nach D0
  53.         MOVE.L  window(A6),A0   ; window nach A0
  54.         LEA     name(A6),A1     ; name nach A1
  55.         MOVE.L  get_n(A6),A2    ; get_n nach A2
  56.         JSR     (A2)            ; Procedure aufrufen
  57.         MOVEM.L (SP)+,D0-A6     ; Register restaurieren
  58.       END;
  59.       (* Jetzt String zusammenbauen *)
  60.       MagicStrings.Assign ("[0][Exitbutton:|",alt);
  61.       MagicStrings.Append (StrConv.IntToStr (but,0), alt);
  62.       MagicStrings.Append (" = '", alt);
  63.       MagicStrings.Append (name, alt);
  64.       MagicStrings.Append ("'|][[Abbruch|[Weiter]", alt);
  65.     UNTIL mtAlerts.Alert (2, alt) = 1;                    (* Alert ausgeben *)
  66.     mtDials.DialForm (tree, mtDials.DFINISH, r, r);       (* Bildschirm freigeben *)
  67.     mtDials.DisposeDial (tree);                           (* und Dialog freigeben *)
  68.   END;
  69. END TestForm;
  70.  
  71.  
  72. (* Zwischenprozeduren, die mit TC-Registerbergabe aufgerufen werden *)
  73.  
  74. (*$L- keinen Eintrittscode fr die Prozedur erzeugen *)
  75.  
  76. (*
  77. LOCAL VOID test_form (tree, editobj, get_n, window)
  78. OBJECT *tree;   A0
  79. WORD   editobj; D0
  80. LONG   get_n;   D1
  81. VOID   *window; A1
  82. *)
  83.  
  84. PROCEDURE testForm ();
  85. BEGIN
  86.   ASSEMBLER
  87.     MOVEM.L D1-A6,-(SP)
  88.     LEA     myStack,A3  ; Stack einrichten fr MM2
  89.     MOVE.L  A0,(A3)+    ; Parameter umkopieren 
  90.     MOVE.W  D0,(A3)+
  91.     MOVE.L  D1,(A3)+
  92.     MOVE.L  A1,(A3)+
  93.     JSR     TestForm     ; MM2-Routine aufrufen 
  94.     MOVEM.L (SP)+,D1-A6
  95.   END
  96. END testForm;
  97.  
  98. PROCEDURE fixObjs();
  99. (* OBJECT  *tree;       A0
  100.  * BOOLEAN is_dialog;   D0
  101.  *)
  102.   (* Macht nichts, braucht auch nichts anderes aufrufen *)
  103. END fixObjs;
  104.  
  105. PROCEDURE doAlert ();
  106. (* WORD defbut, D0
  107.    BYTE *txt)); A0
  108.  *)
  109. BEGIN
  110.   (* Es werden einfach nur die Parameter umkopiert und dann 
  111.    * direkt mtAlerts.Alert aufgerufen, da die Parameter identisch sind.
  112.    *)
  113.   ASSEMBLER
  114.     MOVEM.L D1-A6,-(SP)
  115.     LEA     myStack,A3  ; Stack einrichten fr MM2
  116.     MOVE.W  D0,(A3)+    ; Default-Button
  117.     MOVE.L  A0,(A3)+    ; String-Adresse
  118.     MOVE.W  #255,(A3)+  ; High-Value fr String 
  119.     JSR     mtAlerts.Alert/
  120.     MOVEM.L (SP)+,D1-A6
  121.   END
  122. END doAlert;
  123. (*$L=*)
  124.  
  125. VAR localProcs : ARRAY[0..4] OF ADDRESS;
  126.     rsc        : mtRsc.RESOURCE;
  127.  
  128. PROCEDURE InitObfix (init : BOOLEAN) : ADDRESS;
  129.   VAR voidO : BOOLEAN;
  130. BEGIN
  131.   IF init
  132.   THEN
  133.     (* Alle Module initialisieren *)
  134.     MagicVDI.InitVDI();
  135.     MagicAES.InitAES();
  136.     mtAppl.InitMtAppl();
  137.     mtArea.InitMtArea();
  138.     mtAlerts.InitMtAlerts();
  139.     mtMenubase.InitMtMenubase();
  140.     mtPopups.InitMtPopups();
  141.     mtXobjects.InitMtXobjects();
  142.     mtRsc.InitMtRsc();
  143.     mtDials.InitDials();
  144.     (* Jetzt Resource relozieren *)
  145.     voidO := mtRsc.RelocRsc (CADR  (RscData), rsc);
  146.     (* Adressen der Prozeduren eintragen *)
  147.     localProcs[0] := ADDRESS(fixObjs);
  148.     localProcs[1] := ADDRESS(doAlert);
  149.     localProcs[2] := ADDRESS(testForm);
  150.     (* Adresse der Help-Seite eintragen *)
  151.     localProcs[3] := mtRsc.GaddrRsc (rsc, MagicAES.RTREE, 0);
  152.     RETURN ADR(localProcs);
  153.   ELSE
  154.     RETURN NIL
  155.   END;
  156. END InitObfix;  
  157.  
  158.  
  159. (*$L-*)
  160. PROCEDURE pInitObfix();
  161. BEGIN
  162.   ASSEMBLER
  163.     MOVEM.L D1-A6,-(SP)
  164.     LEA     myStack,A3  ; Stack einrichten fr MM2
  165.     MOVE.W  D0,(A3)+    ; status auf Stack
  166.     JSR     InitObfix/  ; und M2-Initprozedur aufrufen 
  167.     MOVEM.L (SP)+,D1-A6
  168.   END
  169. END pInitObfix;
  170. (*$L=*)
  171.  
  172. VAR voidI : INTEGER;
  173.  
  174. BEGIN
  175.   ASSEMBLER
  176.     BRA.S   start
  177.     LEA     m1(PC),A0               ; fr Linker
  178.     LEA     m2(PC),A0               ; fr Linker
  179. m1: DC.L    $30363130,$31393635     ; '06101965'
  180.     SYNC
  181. m2: DC.L    pInitObfix
  182. start:
  183.   END;
  184.   voidI := mtAlerts.Alert (1,"[3][This program can|only be started from|Interface!][[Cancel]");
  185. END ExtObFix.
  186.